lexer grammar AnalexXML;

options {
  language = Java;
}

@header {
    package practica6;
}

@members {

     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
}

BLANCO : (' '|'\t'|'\r\n') {skip();};
fragment DIGITO : '0'..'9';
fragment LETRA: ('a'..'z')|('A'..'Z')|'_';

ABRIR_ET: '<';
CERRAR_ET: '>';
FIN_ET: '</';
BIBLIOTECA: 'biblioteca';
LIBRO: 'libro';
TITULO: 'titulo';
AUTOR: 'autor';
EDITORIAL: 'editorial';

NUMERO: (DIGITO)+('.'(DIGITO)+)?;
PALABRAS: LETRA(LETRA|DIGITO)*;
SEPARADOR: ';';
PUNTO: '.';

COMILLAS: '"';
IGUAL: '=';
COMENTARIO: '<!--' (options {greedy=false;}:.)* '-->' {skip();};
CADENA: COMILLAS (options {greedy=false;}:.)* COMILLAS;

